package main

import "fmt"

// 递归
// 计算 n 的阶乘 n!
// 3! = 3 * 2 * 1
// 4! = 4 * 3 * 2 * 1
// 5! = 5 * 4 * 3 * 2 * 1
func factorial(n int) int {
	if n > 0 {
		return n * factorial(n-1)
	}
	return 1
}

// 上台阶
// n个台阶 一次走 1 或 2 步, 共 多少种走法
func computed(n uint64) uint64 {
	if n == 1 {
		return 1
	}
	if n == 2 {
		return 2
	}
	return computed(n-1) + computed(n-2)
}

func main() {
	n := 5
	fmt.Printf("%d 的阶乘为 : %d\n", n, factorial(n))

	n = 4
	fmt.Printf("%d 个台阶 共有 : %d种走法\n", n, computed(uint64(n)))
}
